載入套件與圖資
pacman::p_load(
d3heatmap,rgeos,sp,stringr,readxl,dplyr,
leaflet,leaflet.minicharts)
load("data/olist.rdata")
# Brazil Geo-Spatial Data
B <- read_excel("data/BR.xlsx")
B$GDP = B$GDP %>%
str_remove(",") %>% str_extract("^[0-9\\.]+") %>% as.numeric
G = readRDS("data/gadm36_BRA_1_sp.rds")
B = cbind(B, sapply(1:27, function(i) gCentroid(G[i,])@coords) %>% t)
names(B)[11:12] = c('lng','lat')
B$lat[24] = B$lat[24] - 1
B$lng[24] = B$lng[24] + 1
# leaflet world map url
tilesURL <- "http://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}"匯入顧客與廠商的位置
O2 = left_join(I[,c(1,4)], S[,c(1,4)]) %>%
right_join(O) %>%
left_join(C[,c(1,5)]) %>%
rename(from=seller_state, to=customer_state)計算各州的自用、輸出、輸入數量
df = sapply(unique(O2$to), function(s) c(
Intra = sum(s == O2$from & s == O2$to, na.rm=T),
Import = sum(s != O2$from & s == O2$to, na.rm=T),
Export = sum(s == O2$from & s != O2$to, na.rm=T)
)) %>% t %>% data.frame %>%
mutate(
total = Intra + Import + Export,
stCode = unique(O2$to)) %>%
left_join(B[,c(2,11,12)]) %>% data.frame以圓餅圖比較各州的物流型態
leaflet(width = "100%", height = "800px") %>% addTiles(tilesURL) %>%
addPolylines(data=G, color="darkcyan", weight=1, fillOpacity=0) %>%
addMinicharts(
df$lng, df$lat, type = "pie",
chartdata = df[,c("Intra","Import","Export")],
colorPalette = c("gold", "red", "seagreen"),
width = 80 * sqrt(df$total) / sqrt(max(df$total))
)